package com.lframework.xingyun.basedata.mappers;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
import com.lframework.starter.web.core.mapper.BaseMapper;
import com.lframework.xingyun.basedata.entity.Coupon;
import com.lframework.xingyun.basedata.entity.MemberCoupon;
import com.lframework.xingyun.basedata.vo.member.QueryMemberCouponVo;

import java.util.List;
import java.util.Objects;

/**
 * <p>
 * 用户卡券关系表 Mapper 接口
 * </p>
 *
 */
public interface MemberCouponMapper extends BaseMapper<MemberCoupon> {

    /**
     * 查询列表
     * @param vo
     * @return
     */
    default IPage<MemberCoupon> queryPage(QueryMemberCouponVo vo) {
        return defaultJoinWrapper()
                .leftJoin(Coupon.class, Coupon::getId, MemberCoupon::getCouponId)
                .eq(MemberCoupon::getMemberId, vo.getMemberId())
                .eq(Objects.nonNull(vo.getCouponType()), Coupon::getCouponType, vo.getCouponType())
                .eq(Objects.nonNull(vo.getSendWay()), Coupon::getSendWay, vo.getSendWay())
                .eq(Objects.nonNull(vo.getCouponStatus()), MemberCoupon::getCouponStatus, vo.getCouponStatus())
                .page(PageDTO.of(vo.getPageIndex(), vo.getPageSize()));
    }

    /**
     * 查询列表
     * @param vo
     * @return
     */
    default List<MemberCoupon> queryList(QueryMemberCouponVo vo) {
        return defaultJoinWrapper()
                .leftJoin(Coupon.class, Coupon::getId, MemberCoupon::getCouponId)
                .eq(MemberCoupon::getMemberId, vo.getMemberId())
                .eq(Objects.nonNull(vo.getCouponType()), Coupon::getCouponType, vo.getCouponType())
                .eq(Objects.nonNull(vo.getSendWay()), Coupon::getSendWay, vo.getSendWay())
                .eq(Objects.nonNull(vo.getCouponStatus()), MemberCoupon::getCouponStatus, vo.getCouponStatus())
                .list();
    }
}

